home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 May / EnigmA AMIGA RUN 18 (1997)(G.R. Edizioni)(IT)[!][issue 1997-05][EAR-CD II].iso / earcd / misc / emu / arosdev.lha / AROS / rom / exec / addport.c < prev    next >
C/C++ Source or Header  |  1997-01-09  |  2KB  |  90 lines

  1. /*
  2.     (C) 1995-96 AROS - The Amiga Replacement OS
  3.     $Id: addport.c,v 1.7 1997/01/01 03:46:04 ldp Exp $
  4.     $Log: addport.c,v $
  5.     Revision 1.7  1997/01/01 03:46:04  ldp
  6.     Committed Amiga native (support) code
  7.  
  8.     Changed clib to proto
  9.  
  10.     Revision 1.6  1996/12/10 13:51:35  aros
  11.     Moved all #include's in the first column so makedepend can see it.
  12.  
  13.     Revision 1.5  1996/10/24 15:50:42  aros
  14.     Use the official AROS macros over the __AROS versions.
  15.  
  16.     Revision 1.4  1996/08/13 13:55:56  digulla
  17.     Replaced AROS_LA by AROS_LHA
  18.     Replaced some AROS_LH*I by AROS_LH*
  19.     Sorted and added includes
  20.  
  21.     Revision 1.3  1996/08/01 17:41:02  digulla
  22.     Added standard header for all files
  23.  
  24.     Desc:
  25.     Lang: english
  26. */
  27. #include <exec/ports.h>
  28. #include <exec/execbase.h>
  29. #include <aros/libcall.h>
  30. #include <proto/exec.h>
  31.  
  32. /*****************************************************************************
  33.  
  34.     NAME */
  35.  
  36.     AROS_LH1(void, AddPort,
  37.  
  38. /*  SYNOPSIS */
  39.     AROS_LHA(struct MsgPort *, port, A1),
  40.  
  41. /*  LOCATION */
  42.     struct ExecBase *, SysBase, 59, Exec)
  43.  
  44. /*  FUNCTION
  45.     Add a port to the public port list. The ln_Name and ln_Pri fields
  46.     must be initialized prior to calling this function, while
  47.     the port itself is reinitialized before adding. Therefore it's
  48.     not allowed to add an active port.
  49.  
  50.     INPUTS
  51.     port - Pointer to messageport structure.
  52.  
  53.     RESULT
  54.  
  55.     NOTES
  56.  
  57.     EXAMPLE
  58.  
  59.     BUGS
  60.  
  61.     SEE ALSO
  62.  
  63.     INTERNALS
  64.  
  65.     HISTORY
  66.  
  67. ******************************************************************************/
  68. {
  69.     AROS_LIBFUNC_INIT
  70.  
  71.     /* Yes, this is a messageport */
  72.     port->mp_Node.ln_Type=NT_MSGPORT;
  73.  
  74.     /* Clear the list of messages */
  75.     port->mp_MsgList.lh_Head=(struct Node *)&port->mp_MsgList.lh_Tail;
  76.     port->mp_MsgList.lh_Tail=NULL;
  77.     port->mp_MsgList.lh_TailPred=(struct Node *)&port->mp_MsgList.lh_Head;
  78.  
  79.     /* Arbitrate for the list of messageports. */
  80.     Forbid();
  81.  
  82.     /* And add the actual port */
  83.     Enqueue(&SysBase->PortList,&port->mp_Node);
  84.  
  85.     /* All done */
  86.     Permit();
  87.     AROS_LIBFUNC_EXIT
  88. } /* AddPort */
  89.  
  90.